package com.cook.service;

import com.cook.entity.Follows;
import com.baomidou.mybatisplus.extension.service.IService;
import com.cook.vo.user.FollowVO;

import java.util.List;

/**
* @author black-white spider
* @description 针对表【follows(用户关注关系表)】的数据库操作Service
* @createDate 2025-10-27 19:54:38
*/
public interface FollowsService extends IService<Follows> {

    /**
     * 关注
     * @param followerId 关注者ID（当前用户）
     * @param followeeId 被关注者ID（要关注的人）
     * @return 是否关注成功
     */
    boolean follow(Long followerId, Long followeeId);

    /**
     * 取消关注
     * @param followerId 关注者ID（当前用户）
     * @param followeeId 被关注者ID（要取消关注的人）
     * @return 是否取消成功
     */
    boolean unfollow(Long followerId, Long followeeId);

    /**
     * 检查是否已关注
     * @param followerId 关注者ID
     * @param followeeId 被关注者ID
     * @return 是否已关注
     */
    boolean isFollowing(Long followerId, Long followeeId);

    /**
     * 分页查询用户的关注列表
     * @param followerId 关注者ID
     * @param pageNum 页码
     * @param pageSize 每页数量
     * @return 关注列表
     */
    List<FollowVO> getFollowListByPage(Long followerId, Integer pageNum, Integer pageSize);

    /**
     * 查询用户的关注数量
     * @param followerId 关注者ID
     * @return 关注数量
     */
    int getFollowCount(Long followerId);

    /**
     * 查询用户的粉丝列表
     * @param followeeId 被关注者ID
     * @return 粉丝列表
     */
    List<FollowVO> getFollowerList(Long followeeId);

    /**
     * 查询用户的粉丝数量
     * @param followeeId 被关注者ID
     * @return 粉丝数量
     */
    int getFollowerCount(Long followeeId);
}
